<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GSimpleActionGroup</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="index.html" title="GIO Reference Manual">
<link rel="up" href="application.html" title="Application support">
<link rel="prev" href="GActionGroup.html" title="GActionGroup">
<link rel="next" href="GAction.html" title="GAction">
<meta name="generator" content="GTK-Doc V1.17 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
<tr valign="middle">
<td><a accesskey="p" href="GActionGroup.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
<td><a accesskey="u" href="application.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
<th width="100%" align="center">GIO Reference Manual</th>
<td><a accesskey="n" href="GAction.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
</tr>
<tr><td colspan="5" class="shortcuts">
<a href="#GSimpleActionGroup.synopsis" class="shortcut">Top</a>
                   | 
                  <a href="#GSimpleActionGroup.description" class="shortcut">Description</a>
                   | 
                  <a href="#GSimpleActionGroup.object-hierarchy" class="shortcut">Object Hierarchy</a>
                   | 
                  <a href="#GSimpleActionGroup.implemented-interfaces" class="shortcut">Implemented Interfaces</a>
</td></tr>
</table>
<div class="refentry">
<a name="GSimpleActionGroup"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GSimpleActionGroup.top_of_page"></a>GSimpleActionGroup</span></h2>
<p>GSimpleActionGroup — A simple GActionGroup implementation</p>
</td>
<td valign="top" align="right"></td>
</tr></table></div>
<div class="refsynopsisdiv">
<a name="GSimpleActionGroup.synopsis"></a><h2>Synopsis</h2>
<pre class="synopsis">                    <a class="link" href="GSimpleActionGroup.html#GSimpleActionGroup-struct" title="GSimpleActionGroup">GSimpleActionGroup</a>;

<a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="returnvalue">GSimpleActionGroup</span></a> *     <a class="link" href="GSimpleActionGroup.html#g-simple-action-group-new" title="g_simple_action_group_new ()">g_simple_action_group_new</a>      (<em class="parameter"><code><span class="type">void</span></code></em>);

<a class="link" href="GAction.html" title="GAction"><span class="returnvalue">GAction</span></a> *                <a class="link" href="GSimpleActionGroup.html#g-simple-action-group-lookup" title="g_simple_action_group_lookup ()">g_simple_action_group_lookup</a>   (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *action_name</code></em>);
<span class="returnvalue">void</span>                <a class="link" href="GSimpleActionGroup.html#g-simple-action-group-insert" title="g_simple_action_group_insert ()">g_simple_action_group_insert</a>        (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code><a class="link" href="GAction.html" title="GAction"><span class="type">GAction</span></a> *action</code></em>);
<span class="returnvalue">void</span>                <a class="link" href="GSimpleActionGroup.html#g-simple-action-group-remove" title="g_simple_action_group_remove ()">g_simple_action_group_remove</a>        (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *action_name</code></em>);

struct              <a class="link" href="GSimpleActionGroup.html#GActionEntry" title="struct GActionEntry">GActionEntry</a>;
<span class="returnvalue">void</span>                <a class="link" href="GSimpleActionGroup.html#g-simple-action-group-add-entries" title="g_simple_action_group_add_entries ()">g_simple_action_group_add_entries</a>   (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code>const <a class="link" href="GSimpleActionGroup.html#GActionEntry" title="struct GActionEntry"><span class="type">GActionEntry</span></a> *entries</code></em>,
                                                         <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> n_entries</code></em>,
                                                         <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
</pre>
</div>
<div class="refsect1">
<a name="GSimpleActionGroup.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="synopsis">
  <a href="./../gobject/gobject/gobject-The-Base-Object-Type.html#GObject">GObject</a>
   +----GSimpleActionGroup
</pre>
</div>
<div class="refsect1">
<a name="GSimpleActionGroup.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
<p>
GSimpleActionGroup implements
 <a class="link" href="GActionGroup.html" title="GActionGroup">GActionGroup</a>.</p>
</div>
<div class="refsect1">
<a name="GSimpleActionGroup.description"></a><h2>Description</h2>
<p>
<a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> is a hash table filled with <a class="link" href="GAction.html" title="GAction"><span class="type">GAction</span></a> objects,
implementing the <a class="link" href="GActionGroup.html" title="GActionGroup"><span class="type">GActionGroup</span></a> interface.
</p>
</div>
<div class="refsect1">
<a name="GSimpleActionGroup.details"></a><h2>Details</h2>
<div class="refsect2">
<a name="GSimpleActionGroup-struct"></a><h3>GSimpleActionGroup</h3>
<pre class="programlisting">typedef struct _GSimpleActionGroup GSimpleActionGroup;</pre>
<p>
The <a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> structure contains private data and should only be accessed using the provided API.
</p>
<p class="since">Since 2.28</p>
</div>
<hr>
<div class="refsect2">
<a name="g-simple-action-group-new"></a><h3>g_simple_action_group_new ()</h3>
<pre class="programlisting"><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="returnvalue">GSimpleActionGroup</span></a> *     g_simple_action_group_new      (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>
Creates a new, empty, <a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody><tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a new <a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a>
</td>
</tr></tbody>
</table></div>
<p class="since">Since 2.28</p>
</div>
<hr>
<div class="refsect2">
<a name="g-simple-action-group-lookup"></a><h3>g_simple_action_group_lookup ()</h3>
<pre class="programlisting"><a class="link" href="GAction.html" title="GAction"><span class="returnvalue">GAction</span></a> *                g_simple_action_group_lookup   (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *action_name</code></em>);</pre>
<p>
Looks up the action with the name <em class="parameter"><code>action_name</code></em> in the group.
</p>
<p>
If no such action exists, returns <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>simple</code></em> :</span></p></td>
<td>a <a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>action_name</code></em> :</span></p></td>
<td>the name of an action</td>
</tr>
<tr>
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
<td>a <a class="link" href="GAction.html" title="GAction"><span class="type">GAction</span></a>, or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span>
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.28</p>
</div>
<hr>
<div class="refsect2">
<a name="g-simple-action-group-insert"></a><h3>g_simple_action_group_insert ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                g_simple_action_group_insert        (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code><a class="link" href="GAction.html" title="GAction"><span class="type">GAction</span></a> *action</code></em>);</pre>
<p>
Adds an action to the action group.
</p>
<p>
If the action group already contains an action with the same name as
<em class="parameter"><code>action</code></em> then the old action is dropped from the group.
</p>
<p>
The action group takes its own reference on <em class="parameter"><code>action</code></em>.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>simple</code></em> :</span></p></td>
<td>a <a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>action</code></em> :</span></p></td>
<td>a <a class="link" href="GAction.html" title="GAction"><span class="type">GAction</span></a>
</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.28</p>
</div>
<hr>
<div class="refsect2">
<a name="g-simple-action-group-remove"></a><h3>g_simple_action_group_remove ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                g_simple_action_group_remove        (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code>const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *action_name</code></em>);</pre>
<p>
Removes the named action from the action group.
</p>
<p>
If no action of this name is in the group then nothing happens.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>simple</code></em> :</span></p></td>
<td>a <a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>action_name</code></em> :</span></p></td>
<td>the name of the action</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.28</p>
</div>
<hr>
<div class="refsect2">
<a name="GActionEntry"></a><h3>struct GActionEntry</h3>
<pre class="programlisting">struct GActionEntry {
  const gchar *name;

  void (* activate) (GSimpleAction *action,
                     GVariant      *parameter,
                     gpointer       user_data);

  const gchar *parameter_type;

  const gchar *state;

  void (* change_state) (GSimpleAction *action,
                         GVariant      *value,
                         gpointer       user_data);
};
</pre>
<p>
This struct defines a single action.  It is for use with
<a class="link" href="GSimpleActionGroup.html#g-simple-action-group-add-entries" title="g_simple_action_group_add_entries ()"><code class="function">g_simple_action_group_add_entries()</code></a>.
</p>
<p>
The order of the items in the structure are intended to reflect
frequency of use.  It is permissible to use an incomplete initialiser
in order to leave some of the later values as <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.  All values
after <em class="parameter"><code>name</code></em> are optional.  Additional optional fields may be added in
the future.
</p>
<p>
See <a class="link" href="GSimpleActionGroup.html#g-simple-action-group-add-entries" title="g_simple_action_group_add_entries ()"><code class="function">g_simple_action_group_add_entries()</code></a> for an example.
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term">const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GActionEntry.name"></a>name</code></em>;</span></p></td>
<td>the name of the action</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GActionEntry.activate"></a>activate</code></em> ()</span></p></td>
<td>the callback to connect to the "activate" signal of the
action</td>
</tr>
<tr>
<td><p><span class="term">const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GActionEntry.parameter-type"></a>parameter_type</code></em>;</span></p></td>
<td>the type of the parameter that must be passed to the
activate function for this action, given as a single
GVariant type string (or <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> for no parameter)</td>
</tr>
<tr>
<td><p><span class="term">const <a href="./../glib/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GActionEntry.state"></a>state</code></em>;</span></p></td>
<td>the initial state for this action, given in GVariant text
format.  The state is parsed with no extra type information,
so type tags must be added to the string if they are
necessary.</td>
</tr>
<tr>
<td><p><span class="term"><em class="structfield"><code><a name="GActionEntry.change-state"></a>change_state</code></em> ()</span></p></td>
<td>the callback to connect to the "change-state" signal
of the action</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
<a name="g-simple-action-group-add-entries"></a><h3>g_simple_action_group_add_entries ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>                g_simple_action_group_add_entries   (<em class="parameter"><code><a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a> *simple</code></em>,
                                                         <em class="parameter"><code>const <a class="link" href="GSimpleActionGroup.html#GActionEntry" title="struct GActionEntry"><span class="type">GActionEntry</span></a> *entries</code></em>,
                                                         <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> n_entries</code></em>,
                                                         <em class="parameter"><code><a href="./../glib/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
<p>
A convenience function for creating multiple <a class="link" href="GSimpleAction.html" title="GSimpleAction"><span class="type">GSimpleAction</span></a> instances
and adding them to the action group.
</p>
<p>
Each action is constructed as per one <a class="link" href="GSimpleActionGroup.html#GActionEntry" title="struct GActionEntry"><span class="type">GActionEntry</span></a>.
</p>
<p>
</p>
<div class="example">
<a name="id900050"></a><p class="title"><b>Example 13. Using <a class="link" href="GSimpleActionGroup.html#g-simple-action-group-add-entries" title="g_simple_action_group_add_entries ()"><code class="function">g_simple_action_group_add_entries()</code></a></b></p>
<div class="example-contents">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
<span class="function">activate_quit</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GSimpleAction</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">simple</span><span class="symbol">,</span>
<span class="normal">               </span><span class="usertype">GVariant</span><span class="normal">      </span><span class="symbol">*</span><span class="normal">parameter</span><span class="symbol">,</span>
<span class="normal">               </span><span class="usertype">gpointer</span><span class="normal">       user_data</span><span class="symbol">)</span>
<span class="cbracket">{</span>
<span class="normal">  </span><span class="function">exit</span><span class="normal"> </span><span class="symbol">(</span><span class="number">0</span><span class="symbol">);</span>
<span class="cbracket">}</span>

<span class="keyword">static</span><span class="normal"> </span><span class="type">void</span>
<span class="function">activate_print_string</span><span class="normal"> </span><span class="symbol">(</span><span class="usertype">GSimpleAction</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">simple</span><span class="symbol">,</span>
<span class="normal">                       </span><span class="usertype">GVariant</span><span class="normal">      </span><span class="symbol">*</span><span class="normal">parameter</span><span class="symbol">,</span>
<span class="normal">                       </span><span class="usertype">gpointer</span><span class="normal">       user_data</span><span class="symbol">)</span>
<span class="cbracket">{</span>
<span class="normal">  </span><span class="function"><a href="./../glib/glib/glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"%s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-GVariant.html#g-variant-get-string">g_variant_get_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">parameter</span><span class="symbol">,</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">));</span>
<span class="cbracket">}</span>

<span class="keyword">static</span><span class="normal"> <a href="GActionGroup.html">GActionGroup</a> </span><span class="symbol">*</span>
<span class="function">create_action_group</span><span class="normal"> </span><span class="symbol">(</span><span class="type">void</span><span class="symbol">)</span>
<span class="cbracket">{</span>
<span class="normal">  </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">GActionEntry</span><span class="normal"> entries</span><span class="symbol">[]</span><span class="normal"> </span><span class="symbol">=</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"quit"</span><span class="symbol">,</span><span class="normal">         activate_quit              </span><span class="cbracket">}</span><span class="symbol">,</span>
<span class="normal">    </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"print-string"</span><span class="symbol">,</span><span class="normal"> activate_print_string</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"s"</span><span class="normal"> </span><span class="cbracket">}</span>
<span class="normal">  </span><span class="cbracket">}</span><span class="symbol">;</span>
<span class="normal">  </span><span class="usertype">GSimpleActionGroup</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">group</span><span class="symbol">;</span>

<span class="normal">  group </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GSimpleActionGroup.html#g-simple-action-group-new">g_simple_action_group_new</a></span><span class="normal"> </span><span class="symbol">();</span>
<span class="normal">  </span><span class="function"><a href="GSimpleActionGroup.html#g-simple-action-group-add-entries">g_simple_action_group_add_entries</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">group</span><span class="symbol">,</span><span class="normal"> entries</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="./../glib/glib/glib-Miscellaneous-Macros.html#G-N-ELEMENTS:CAPS">G_N_ELEMENTS</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">entries</span><span class="symbol">),</span><span class="normal"> <a href="./../glib/glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>

<span class="normal">  </span><span class="keyword">return</span><span class="normal"> </span><span class="function">G_ACTION_GROUP</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">group</span><span class="symbol">);</span>
<span class="cbracket">}</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

</div>
<p><br class="example-break">
</p>
<div class="variablelist"><table border="0">
<col align="left" valign="top">
<tbody>
<tr>
<td><p><span class="term"><em class="parameter"><code>simple</code></em> :</span></p></td>
<td>a <a class="link" href="GSimpleActionGroup.html" title="GSimpleActionGroup"><span class="type">GSimpleActionGroup</span></a>
</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>entries</code></em> :</span></p></td>
<td>a pointer to the first item in an array of <a class="link" href="GSimpleActionGroup.html#GActionEntry" title="struct GActionEntry"><span class="type">GActionEntry</span></a>
structs</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>n_entries</code></em> :</span></p></td>
<td>the length of <em class="parameter"><code>entries</code></em>, or -1</td>
</tr>
<tr>
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
<td>the user data for signal connections</td>
</tr>
</tbody>
</table></div>
<p class="since">Since 2.30</p>
</div>
</div>
</div>
<div class="footer">
<hr>
          Generated by GTK-Doc V1.17</div>
</body>
</html>